• db differ
  • note
  • db differ todo
  • 直接数据转换
  • 直接比较记录
  • db differ
    代码仓库:git@47.97.186.229:cyb/misc.git
    E:\projects\misc\dbdiffer
    http://a.misc.my/dbdiffer/index.php
    mergely -- diff files online 
    - 生成当前dump:
    mysqldump --skip-extended-insert --skip-dump-date -uroot -proot -P3333 p2p21_piaojuke_czbank > tmp1.sql
    - 执行某些操作之后再dump:
    mysqldump --skip-extended-insert --skip-dump-date -uroot -proot -P3333 p2p21_piaojuke_czbank > tmp2.sql
    - 进入differ界面,列出所有dump目录下的文件
    - 选择两个文件a、b,通过diff(git自带的工具)命令生成diff文件:
    - 分析diff文件a、b,生成两个待比较的文件,
     * 分析出表名name,再调用desc name 得到表头字段。
     * 综合表头&数据,并转置
     * 文件名规则:a-b-a,a-b-b,存入out目录。如果文件已经存在,则询问是否覆盖。
    比如,比较03,04,最终生成的文件比较结果:

    note

    需要eval,不能简单批分:
    '4028218166dcfcf40166de4b283f000e','支付成功','【票据客】尊敬的15310405001:您投资的银票宝2375期,金额3000元,订单已支付成功。','2018-11-04 18:35:59','15310405001','-1100|服务器端序列号错误,序列号不存在内存中,或尝试攻击的用户','2018-11-04 18:36:00',2,'{\"orderAmount\":\"3000\",\"payAmount\":\"3000.00\",\"phone\":\"15310405001\",\"realNm\":\"秦尉寒\",\"realCd\":\"ogjHRqk5\",\"triggerNode\":\"order.pay.success\",\"productName\":\"银票宝2375期\"}','order.pay.success','21','system','2018-11-04 18:35:59',1,0,'system','2018-11-04 18:35:59'
    -- 使用eval进行处理最简单,不用语法分析。
    web diff插件
    diff命令需要在path中。
    local_web.php进行配置
    lv1= lv2= type=todo

    db differ todo

    1 做成service,上传两个dump文件,再上传数据库schema或者链接配置,就能显示差异。
    2 如果上传了mysql链接配置,其实可以用户手动dump的,这样不用上传dump文件了。
    3 上传字段注释文件,作为字段的解释?
    SELECT  table_name, COLUMN_NAME, COLUMN_COMMENT FROM INFORMATION_SCHEMA.Columns WHERE 
    table_schema='p2p21_piaojuke_czbank' 
    mysql_cache.txt
    如果没有缓存文件,仍旧链接数据库获取;
    支持上传dump、cache文件
    支持 输入记录
    lv1= lv2= type=todo

    直接数据转换

    用于直接查看insert的插入数据详情,在主页面上加此功能:
    INSERT INTO `product_order` VALUES ('4028218166dcfcf40166de4b27eb000c','system','2018-11-04 18:35:59',0,3000.00,14.50,NULL,14.50,NULL,'PP1810121746916',0,'J181104183559334817','20181104','J181104183559334817','PJK2018110418355900011','PP1810121746916','2018-11-04 18:35:59',1,NULL,'4028218166da2a890166da2b6b9500a4',3000,1,'PP1810121746916',1.00000000,1,'ff80808162272ed1016227340b250002',0,'system','2018-11-04 18:35:59',0,'支付成功',1,'6210193310200514239','秦尉寒',NULL,0.0600,NULL);
    每一条insert语句,直接做如下转换:
    --- table product_order----
    orderId  : '4028218166dcfcf40166de4b27eb000c'
    createBy  : 'system'
    createTime  : '2018-11-04 18:35:59'
    version  : 0
    amount  : 3000.00
    anticipatedIncome  : 14.50
    createDate  : NULL
    expectedIncome  : 14.50
    freezeStatus  : NULL
    freezeTrxId  : 'PP1810121746916'
    investWay  : 0
    orderCd  : 'J181104183559334817'
    orderDate  : '20181104'
    orderNo  : 'J181104183559334817'
    outsideOrderNo  : 'PJK2018110418355900011'
    outsideSerialNo  : 'PP1810121746916'
    payEndDate  : '2018-11-04 18:35:59'
    payStatus  : 1
    payUrl  : NULL
    productId  : '4028218166da2a890166da2b6b9500a4'
    quantity  : 3000
    status  : 1
    trxId  : 'PP1810121746916'
    unitprice  : 1.00000000
    verifyStatus  : 1
    memberId  : 'ff80808162272ed1016227340b250002'
    deleted  : 0
    updateBy  : 'system'
    updateTime  : '2018-11-04 18:35:59'
    operationSrc  : 0
    resultStr  : '支付成功'
    stageFlag  : 1
    tradeBankCard  : '6210193310200514239'
    tradeRealNm  : '秦尉寒'
    couponAmount  : NULL
    rate  : 0.0600
    couponOutsideOrderNo  : NULL
    lv1= lv2= type=todo

    直接比较记录

    直接数据转换 的基础上,选择比较,如果有两条以上的记录,则直接展开、比较(在比较页面)前两条记录。